perm filename APROLD.FAI[REV,MUS] blob sn#122778 filedate 1977-05-24 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00004 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	entry APR
 00003 00003	 (REV) [ALP1] 1-pole allpass, accumulator loop
 00004 00004	 (REV) [ALP1] Setup for 1-pole allpass
 00006 ENDMK
⊗;
entry APR
title APR
subttl Hand-coded 1st order all-pass reverberation routine
internal APR

comment ⊗
External procedure APR(reference real X,Y; integer N;
	reference real Del; integer delay;
	real gain; reference integer pos);
⊗

posloc←←-1
Gloc←←-2
delloc←←-3
dloc←←-4
Nloc←←-5
Yloc←←-6
Xloc←←-7
pd←←10

ac2←5
ac3←6
p←17

integer save17,save12,save16
; (REV) [ALP1] 1-pole allpass, accumulator loop

alp:
phase 0
t:	0
t1:	0
pos:	0
J:	0
A1loc:	move t,0(pos)
X1loc:	move t1,0(J)
coef1:	fmpri t1,0
	fsbrb t,t1	; Output is in T for now
coef2:	fmpri t1,0
X2loc:	fadr t1,0(J)
A2loc:	movem t1,0(pos)
Y1loc:	movem t,0(J)
	aojl pos,jinc
mi:	movni pos,0
jinc:	aojl J,A1loc
	jrst xit
dephase
; (REV) [ALP1] Setup for 1-pole allpass

APR:	move ac2,delloc(p)
	move ac3,Dloc(p)
	addi ac3,(ac2)
	hrrm ac3,alp+A1loc
	hrrm ac3,alp+A2loc
	hrrm ac2,alp+mi
	skipn ac2,@posloc(p)
	movn ac2,delloc(p)
	movem ac2,alp+pos
	move ac2,Nloc(p)
	move ac3,Xloc(p)
	addi ac3,(ac2)
	hrrm ac3,alp+X1loc
	hrrm ac3,alp+X2loc
	move ac3,Yloc(p)
	addi ac3,(ac2)
	hrrm ac3,alp+Y1loc
	movnm ac2,alp+J
	move ac2,Gloc(p)
	hlrm ac2,alp+coef1
	hlrm ac2,alp+coef2	; Put in multiplier
	movem 17,save17
	movem 12,save12
	movem 16,save16
	movsi 17,alp
	blt 17,17
	jrst A1loc

xit:	move 17,save17
	move 16,save16
	move 12,save12
	movem pos,@posloc(p)
	sub p,[xwd pd,pd]
	jrst @pd(p)

end